package com.esayread.utils

import com.esayread.data.BookFormat

/**
 * 文件格式配置类
 * 统一管理支持的电子书格式，方便后续扩展
 */
object FileFormatConfig {
    
    /**
     * 支持的文件扩展名列表
     */
    val SUPPORTED_EXTENSIONS = setOf(
        "epub",
        "pdf", 
        "mobi",
        "doc",
        "docx",
        "txt"
    )
    
    /**
     * 文件扩展名到BookFormat的映射
     */
    private val EXTENSION_TO_FORMAT = mapOf(
        "epub" to BookFormat.EPUB,
        "pdf" to BookFormat.PDF,
        "mobi" to BookFormat.MOBI,
        "doc" to BookFormat.PDF,  // 暂时映射到PDF
        "docx" to BookFormat.PDF, // 暂时映射到PDF
        "txt" to BookFormat.PDF   // TXT文件映射到PDF格式
    )
    
    /**
     * 检查文件是否为支持的格式
     */
    fun isSupportedFile(fileName: String): Boolean {
        val extension = fileName.substringAfterLast('.', "").lowercase()
        val isSupported = extension in SUPPORTED_EXTENSIONS
        android.util.Log.d("FileFormatConfig", "检查文件: $fileName, 扩展名: $extension, 支持的扩展名: $SUPPORTED_EXTENSIONS, 结果: $isSupported")
        return isSupported
    }
    
    /**
     * 根据文件扩展名获取BookFormat
     */
    fun getBookFormat(fileName: String): BookFormat {
        val extension = if (fileName.contains(".")) {
            fileName.substringAfterLast('.', "").lowercase()
        } else {
            fileName.lowercase() // 如果传入的就是扩展名
        }
        return EXTENSION_TO_FORMAT[extension] ?: BookFormat.EPUB
    }
    
    /**
     * 获取格式显示名称
     */
    fun getFormatDisplayName(format: BookFormat): String {
        return when (format) {
            BookFormat.EPUB -> "EPUB"
            BookFormat.PDF -> "PDF"
            BookFormat.MOBI -> "MOBI"
        }
    }
    
    /**
     * 获取所有支持的扩展名的正则表达式模式
     */
    fun getSupportedExtensionsPattern(): String {
        return SUPPORTED_EXTENSIONS.joinToString("|") { "\\.$it$" }
    }
}